/**
 * Copyright 2008-2009. Chongqing Communications Industry Services Co.,Ltd Information Technology Branch. All rights
 * reserved. <a>http://www.cqcis.com</a>
 */
package com.cqcis.uip.base.framework.core;

import java.util.List;

import org.apache.log4j.Appender;

import com.cqcis.uip.base.logadaptor.LogConfiguration;

/**
 * 日志服务, 提供动态的日志修改功能
 * 
 * @author huangmy
 * @date   2008-2-2
 */
public interface LogService {
	/**
     * 注册指定线程的日志
     * @param filename
     * @param level
     */
    public void register(LogConfiguration logConfiguration, Thread thread);
    
    /**
     * 注册当前线程的日志
     * @param filename
     * @param level
     */
    public void register(LogConfiguration logConfiguration);
    
    /**
     * 取消设置的日志
     */
    public void unregister(Thread thread);
    
    /**
     * 获取指定线程相关联的日志配置
     * @return
     */
    public List<LogConfiguration> getLogConfiguration(Thread thread);
    
    /**
     * 取消当前线程设置的日志
     */
    public void unregister();
    
	/**
     * 获取当前线程相关联的append
     * @return
     */
    public List<Appender> getAppenders(Thread thread); 
    
    /**
     * 删除指定线程上的日志配置
     * 
     * @param logConfiguration
     * @param thread
     */
    public void removeLogConfiguration(LogConfiguration logConfiguration, Thread thread);
    
    /**
     * 试图删除并关闭日志组件，如果还有其他配置连接到该日志组件上，则不操作，否则删除且关闭
     * 
     * @param logConfiguration
     * @return
     */
    public void tryCloseLogAppender(LogConfiguration logConfiguration);
}
